package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
	"time"
)

/**
参数 - 获取绑定参数
*/
func main() {
	r := gin.Default()

	// Get方法
	r.GET("/testing", testing)
	// Post方法
	r.POST("/testing", testing)

	r.Run(":8090")
}

type Person struct {
	Name     string    `form:"name"`
	Address  string    `form:"address"`
	Birthday time.Time `form:"birthday" time_format:"2006-01-12"`
}

/**
回调函数
*/
func testing(c *gin.Context) {
	//var person Person
	//
	//// 这里是根据请求的content-type来做不同的binding操作
	//if err := c.ShouldBind(&person); err == nil {
	//	c.String(http.StatusOK, "%v", person)
	//} else {
	//	c.String(http.StatusInternalServerError, "person bind error: %s", err.Error())
	//}

	var person *Person = new(Person)

	// 这里是根据请求的content-type来做不同的binding操作
	if err := c.ShouldBind(person); err == nil {
		c.String(http.StatusOK, "%v", person.Name)
	} else {
		c.String(http.StatusInternalServerError, "person bind error: %s", err.Error())
	}
}

/**
验证请求参数
1、结构体验证
2、自定义验证
3、升级验证 - 支持多语言错误信息
*/
